package properties_gin

type GinProperty struct {
	Mode      string            `mapstructure:"mode" json:"mode" yaml:"mode"`
	Server    ServerProperty    `mapstructure:"server" json:"server" yaml:"server"`
	Pprof     PprofProperty     `mapstructure:"pprof" json:"pprof" yaml:"pprof"`
	Proxy     ProxyProperty     `mapstructure:"proxy" json:"proxy" yaml:"proxy"`
	Cors      CorsProperty      `mapstructure:"cors" json:"cors" yaml:"cors"`
	AuthGroup AuthGroupProperty `mapstructure:"auth-group" json:"auth-group" yaml:"auth-group"`
	Router    RouterProperty    `mapstructure:"router" json:"router" yaml:"router"`
	Multipart MultipartProperty `mapstructure:"multipart" json:"multipart" yaml:"multipart"`
}

type RouterProperty struct {
	ContextPath     string            `mapstructure:"context-path" json:"context-path" yaml:"context-path"`
	StaticMap       map[string]string `mapstructure:"static-map" json:"static-map" yaml:"static-map"`
	StaticFileMap   map[string]string `mapstructure:"static-file-map" json:"static-file-map" yaml:"static-file-map"`
	PublicGroupPath string            `mapstructure:"public-group-path" json:"public-group-path" yaml:"public-group-path"`
	SystemGroupPath string            `mapstructure:"system-group-path" json:"system-group-path" yaml:"system-group-path"`
}

type ServerProperty struct {
	Addr string `mapstructure:"addr" json:"addr" yaml:"addr"`
}

type MultipartProperty struct {
	MaxMemory          string `mapstructure:"max-memory" json:"max-memory" yaml:"max-memory"`
	MaxFileSize        string `mapstructure:"max-file-size" json:"max-file-size" yaml:"max-file-size"`
	UploadPath         string `mapstructure:"upload-path" json:"upload-path" yaml:"upload-path"`
	AbsoluteUploadPath string `mapstructure:"absolute-upload-path" json:"absolute-upload-path" yaml:"absolute-upload-path"`
	MaxFilenameLen     string `mapstructure:"max-filename-len" json:"max-filename-len" yaml:"max-filename-len"`
	BrowserUploadPath  string `mapstructure:"browser-upload-path" json:"browser-upload-path" yaml:"browser-upload-path"`
}
